package com.imu.purse.modules.app.service.impl;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.github.pagehelper.PageHelper;
import com.imu.core.base.BaseService;
import com.imu.purse.modules.app.dao.ImuUserLoginMapper;
import com.imu.purse.modules.app.entity.ImuUserLoginEntity;
import com.imu.purse.modules.app.service.ImuUserLoginService;
import com.xiaoleilu.hutool.util.ArrayUtil;
import com.xiaoleilu.hutool.util.NumberUtil;
import com.xiaoleilu.hutool.util.StrUtil;

/**
 * 用户登录记录
 * @author sunhongwei
 * @email sunhongwei@jshijian.com
 * @date 2018-03-21 14:47:08
 * Copyright (c) 2017 武汉极时间科技有限公司 版权所有 
 * Jshijian aloha CO.,LTD. All Rights Reserved. 
 */
@Service
public class ImuUserLoginServiceImpl extends BaseService<ImuUserLoginEntity> implements ImuUserLoginService 
{
	@Override
    @Transactional
    public String save(final ImuUserLoginEntity imuUserLogin)
	{
		try {
	        String name = InetAddress.getLocalHost().getHostName();// 获取计算机名
	        String ip = InetAddress.getLocalHost().getHostAddress();// 获取IP地址
	        Properties props=System.getProperties(); //获得系统属性集    
	        String osName = props.getProperty("os.name"); //操作系统名称    
	        String osVersion = props.getProperty("os.version"); //操作系统版本  
	        imuUserLogin.setDevName(name);
	        imuUserLogin.setDevCode(ip);
	        imuUserLogin.setOs(osName);
	        imuUserLogin.setOsVer(osVersion);
	    } catch (UnknownHostException e) {
	        e.printStackTrace();
	    }
		imuUserLogin.setTimeCreate(new Date());
		super.insert(imuUserLogin);
		return null;
	}
	
	@Override
	@Transactional
    public int update(final ImuUserLoginEntity imuUserLogin) 
    {
    	return mapper.updateByPrimaryKeySelective(imuUserLogin);
    }
    
    @Override
	@Transactional
    public int saveUpdate(final ImuUserLoginEntity imuUserLogin)
    {
    	int len = 0;
    	
    	if(1 > (len = this.update(imuUserLogin)))
    	{
        	len = this.insert(imuUserLogin);
    	}
    	
    	return len;
    }
    
 	@Override
	@Transactional
    public boolean delete(final String ...ids)
    {
    	if(ArrayUtil.isEmpty(ids)) return false;
    	
    	for (String id : ids) 
    	{
    		if(StrUtil.isBlank(id)) continue;
    		
    		if(NumberUtil.isNumber(id))
    		{
        		mapper.deleteByPrimaryKey(Long.valueOf(id));
    		}
		}
    	
    	return true;
    }
    
    @Override
    public ImuUserLoginEntity findById(final Long id)
    {
    	if(null == id) return null;
    	return mapper.selectByPrimaryKey(id);
    }
    
    @Override
    public List<ImuUserLoginEntity> queryList(final ImuUserLoginEntity imuUserLogin)
    {
    	if (imuUserLogin.getPage() != null && imuUserLogin.getLimit() != null)
    	{
            PageHelper.startPage(imuUserLogin.getPage(), imuUserLogin.getLimit());
        }
    	
    	return mapper.findByPage(imuUserLogin);
    }
    
    @Override
	public ImuUserLoginEntity findByToken(String token) {
		ImuUserLoginEntity imuUserLogin = new ImuUserLoginEntity();
		imuUserLogin.setToken(token);
		return mapper.selectOne(imuUserLogin);
	}
	
	@Autowired
	private ImuUserLoginMapper mapper;
	
}
